package studentinformationmanagementsystem.service.impl;

import studentinformationmanagementsystem.dao.AdminDao;
import studentinformationmanagementsystem.dao.impl.AdminDaoImpl;
import studentinformationmanagementsystem.entity.Admin;
import studentinformationmanagementsystem.entity.Page;
import studentinformationmanagementsystem.entity.Student;
import studentinformationmanagementsystem.service.AdminService;

import java.util.List;

public class AdminServiceImpl implements AdminService {
    AdminDao adminDao=new AdminDaoImpl();

    /**
     * 登陆
     * @param admin
     * @return
     */
    @Override
    public Admin login(Admin admin) {
        return adminDao.queryByUsernameAndPassword(admin);
    }


    /**
     * 添加管理员
     * @param admin
     * @return
     */
    @Override
    public int insert(Admin admin) {
        return adminDao.insert(admin);
    }

    /**
     * 修改管理员信息
     * @param admin
     * @return
     */
    @Override
    public int update(Admin admin) {
        return adminDao.update(admin);
    }

    /**
     * 删除管理员信息
     * @param admin
     * @return
     */
    @Override
    public int delete(Admin admin) {
        return adminDao.delete(admin);
    }

    /**
     * 查询所有管理员信息
     * @return
     */
    @Override
    public List<Admin> queryAll() {
        return adminDao.queryAll();
    }


    /**
     * 根据id查询管理员信息
     * @param admin 管理员ID
     * @return
     */
    @Override
    public Admin queryById(Admin admin) {

        return adminDao.queryById(admin);
    }


    /**
     * 判断管理员是否已经存在
     * @param admin
     * @return
     */
    @Override
    public boolean isExistsUsername(Admin admin) {

        boolean falg=false;

        Admin admin1 = adminDao.queryByUsername(admin);

        if (admin1!=null){
            falg=true;
        }

        return falg;
    }

    /**
     * 分页展示
     * @param pageNo  查询页码
     * @param pageSize  每页的记录数
     * @return
     */
    @Override
    public Page<Admin> page(int pageNo, int pageSize) {
        /**
         * 当前页码:pageNo
         * 总页码:pageTotal
         * 当前页显示的数量:pageSize
         * 总记录数:pageTotalCount
         * 当前页数据:items
         */

        //访问页面的记录条数的开始行数：当前页码-1*每页展示的记录行数
        int bigin=(pageNo-1)*pageSize;


        //总记录数量
        Integer pageTotalCount=adminDao.queryForPageTotalCount();

        //总页码数量=总记录数/每页记录显示数量，然后判断是否可以被除尽，如果不能除尽，那么总的页码数量就需要+1
        Integer pageTotal=pageTotalCount/pageSize;

        if (pageTotalCount%pageSize!=0){
            pageTotal++;
        }


        //当前页码数据
        List<Admin> items = adminDao.queryForPageItems(bigin, pageSize);

        Page<Admin> objectPage = new Page<Admin>(pageNo,pageTotal,pageSize,pageTotalCount,items);

        return objectPage;
    }

}
